外观
🎈 想读易懂版?
本章有易懂版(大白话讲重点,10 分钟读完):[第 19 章 自动化工作流的可靠性(易懂版)](../../easy/第19章 自动化工作流的可靠性(易懂版).md)
第 19 章 自动化工作流的可靠性
本章目标:掌握可靠性的三支柱(留痕/验证/人审)、失败处理的正确姿势,以及幂等、可恢复、可回退等进阶能力。可靠的自动化 = 看得见(留痕)+ 验得出(校验)+ 人把关(人审)。宁可慢一点,不可错得漂亮。
19.1 自动化最大的敌人:悄悄出错
自动化最危险的不是"跑不起来",而是**"看起来在跑,其实错了"**。一份错数据的周报,比没有周报更有害——因为没人会怀疑它。
19.1.1 两种失败
| 类型 | 表现 | 危害 |
|---|---|---|
| 显性失败 | 报错、中断、跑不起来 | 低——你能看到 |
| 隐性失败 | 跑完了,但结果错 | 高——没人会发现 |
这一章全部内容,都在对抗"隐性失败"。
19.2 可靠性三支柱
留痕(Logging)→ 每次运行都有记录
验证(Validation)→ 产出自动校验
人审(Human-in-the-loop)→ 关键节点人把关缺一个,可靠性就塌一角。
19.2.1 三支柱的关系
留痕:出了问题能追溯(案发现场)
验证:问题在交付前被发现(体检)
人审:重要结果有人拍板(最后一公里)留痕管过去、验证管现在、人审管未来——三者互补,缺一不可。
19.3 支柱一:留痕(Logging)
每次运行,自动记录:
时间、输入(文件/参数)、步骤、关键中间值、输出、耗时运行日志示例:
2026-08-08 18:00:01 开始:合并 3 个 CSV
2026-08-08 18:00:03 读取 data/a.csv(1,204 行)
2026-08-08 18:00:05 合并完成,共 3,612 行
2026-08-08 18:00:06 校验:行数一致 ✓,写入 output/出问题时,日志就是案发现场。 没有日志的自动化 = 没有黑匣子的飞机。
19.3.1 日志要记什么
| 项目 | 为什么 |
|---|---|
| 运行时间 | 判断是否按时跑 |
| 输入参数 | 复现问题必须 |
| 关键中间值 | 定位错在哪一步 |
| 输出位置 | 找到产物 |
| 耗时 | 监控性能退化 |
19.4 支柱二:验证(Validation)
自动化内部要自带"体检",不能交付前才发现:
| 检查 | 示例 |
|---|---|
| 数量校验 | 输出行数 = 输入行数之和 |
| 格式校验 | 日期格式、字段齐全 |
| 内容校验 | 关键字段无空值、无重复 |
| 阈值告警 | 环比变化 > 50% 时标记异常 |
例:合并后自动校验"行数 = 1,204 + 1,158 + 1,250 = 3,612",
不通过就报警,不静默通过。19.4.1 校验的设计原则
- 可自动化:用代码检查,不靠人肉抽查;
- 足够敏感:关键错误一定触发告警;
- 不误报:告警阈值别设太低,否则狼来了;
- 失败即停:校验不过,立即停下,不继续往下跑。
19.5 支柱三:人审节点(Human-in-the-loop)
自动化跑得再稳,最后一公里永远留给人类:
- 重要输出:生成草稿 → 人确认 → 才发布;
- 不可逆操作:先模拟 → 人批准 → 才执行;
- 异常处理:自动失败自动暂停,等人决策,不自动重试掩盖问题。
19.5.1 人审该放在哪
| 位置 | 例子 | 原因 |
|---|---|---|
| 发布前 | 周报发布、对外发送 | 对外影响,人把关 |
| 不可逆操作前 | 删除、覆盖、推送远程 | 出错无法挽回 |
| 高风险决策 | 预算调整建议 | 判断权在人 |
19.6 处理失败的正确姿势
失败 → 停下(不硬跑)→ 记录现场 → 通知人 → 人决策:
修输入重跑 / 修步骤 / 放弃本次不要:失败后自动重试 10 次掩盖问题。
19.6.1 失败处理对比
| 做法 | 结果 |
|---|---|
| 失败即停 + 通知人 | 问题暴露,人能干预 |
| 失败自动重试 N 次 | 掩盖问题,浪费资源 |
| 失败静默跳过 | 最危险——产物残缺还当成功 |
19.7 可靠性的进阶:幂等与可恢复
- 幂等:同一输入跑两次,结果一样(不会重复发消息、重复扣款);
- 可恢复:第 3 步失败,修好后从第 3 步继续,而不是从头再来;
- 可回退:本次输出错了,能一键回到上一次正确版本。
19.7.1 为什么幂等重要
自动化经常要重跑(第一次网络超时、数据源更新)。如果任务不幂等:
重跑一次 → 重复发了一封邮件 → 重复扣了一次款 → 灾难设计原则:任务要能安全地重跑,结果与次数无关。
19.8 可靠性检查清单(部署前过一遍)
- [ ] 有运行日志(时间/输入/步骤/输出)?
- [ ] 有自动校验(数量/格式/内容)?
- [ ] 校验失败会停下而不是静默通过?
- [ ] 重要输出前有人审节点?
- [ ] 任务可安全重跑(幂等)?
- [ ] 失败后能恢复/回退?
19.9 练习
- 找一个你现有的自动化任务,检查它是否三支柱齐全;
- 补上日志和校验(至少数量校验);
- 模拟一次失败,确认它会"停下 + 通知人"而不是"静默出错";
- 用 19.8 检查清单给现有自动化打分,补缺口。
小结:可靠的自动化 = 看得见(留痕)+ 验得出(校验)+ 人把关(人审)。宁可慢一点,不可错得漂亮。下一章:记忆系统进阶。